import java.util.Vector;

public class UserInputElements{
	/*
	 * TODO: Avoid recoding the entire class. Need to re-implement this class.
	 */
	private static final int INITIALIZE_TASKID = -1;
	private static final String INITIALIZE_TASKTITLE = "";
	private static final String INITIALIZE_TASKDESCRIPTION = "";
	private static final String INITIALIZE_TASKSTARTDATE = "";
	private static final String INITIALIZE_TASKENDDATE = "";
	private static final boolean INITIALIZE_ISTASKSTARRED = false;
	private static final boolean INITIALIZE_ISTASKDONE = false;
	private static final TaskAction INITIALIZE_TASKACTION = TaskAction.UNDEFINED;
	private static final TaskType INITIALIZE_TASKTYPE = TaskType.UNDEFINED;

	public enum TaskType {
		UNDEFINED,TIMEDTASK,DEADLINETASK, GENERALTASK
	}

	public enum TaskAction {
		UNDEFINED,ADD,DELETE,UPDATE,VIEW,SEARCH,UNDO,SYNC
	}

	private int taskId;
	private String taskTitle;
	private String taskStartDate;
	private String taskEndDate;
	private String taskDescription;
	private boolean isTaskStarred;
	private TaskType taskType;
	private boolean isTaskDone;
	private TaskAction taskAction;
	public UserInputElements() {

		initializeMembers();
	}

	private void initializeMembers() {
		taskId = INITIALIZE_TASKID;
		taskTitle = INITIALIZE_TASKTITLE;
		taskStartDate = INITIALIZE_TASKSTARTDATE;
		taskEndDate = INITIALIZE_TASKENDDATE;
		setTaskDescription(INITIALIZE_TASKDESCRIPTION);
		isTaskStarred = INITIALIZE_ISTASKSTARRED;
		isTaskDone = INITIALIZE_ISTASKDONE;
		taskAction = INITIALIZE_TASKACTION;
		taskType = INITIALIZE_TASKTYPE;

	}

	/**
	 * 
	 * @param taskId
	 */
	public void setTaskId(int taskId){
		this.taskId = taskId;
	}
	/**
	 * 
	 * @return
	 */
	public int getTaskId(){
		return this.taskId;
	}
	/**
	 * 
	 * @param taskTitle
	 */
	public void setTaskTitle(String taskTitle){
		this.taskTitle = taskTitle;
	}
	/**
	 * 
	 * @return
	 */
	public String getTaskTitle(){
		return this.taskTitle;
	}
	/**
	 * 
	 * @param taskStartDate
	 */
	public void setTaskStartDate(String taskStartDate){
		this.taskStartDate = taskStartDate;
	}
	/**
	 * 
	 * @return
	 */
	public String getTaskStartDate(){
		return this.taskStartDate;
	}
	/**
	 * 
	 * @param taskEndDate
	 */
	public void setTaskEndDate(String taskEndDate){
		this.taskEndDate = taskEndDate;
	}
	/**
	 * 
	 * @return
	 */
	public String getTaskEndDate(){
		return this.taskEndDate;
	}
	/**
	 * 
	 * @param isTaskStarred
	 */
	public void setIsTaskStarred(boolean isTaskStarred){
		this.isTaskStarred = isTaskStarred;
	}
	/**
	 * 
	 * @return
	 */
	public boolean getIsTaskStarred(){
		return this.isTaskStarred;
	}
	/**
	 * 
	 * @param isTaskDone
	 */
	public void setIsTaskDone(boolean isTaskDone){
		this.isTaskDone = isTaskDone;
	}
	/**
	 * 
	 * @return
	 */
	public boolean getIsTaskDone(){
		return this.isTaskDone;
	}
	/**
	 * 
	 * @param taskType
	 */
	public void setTaskType(TaskType taskType){
		this.taskType = taskType;
	}
	/**
	 * 
	 * @return
	 */
	public TaskType getTaskType(){
		return this.taskType;
	}
	/**
	 * 
	 * @return
	 */
	public String getTaskDescription() {
		return taskDescription;
	}
	/**
	 * 
	 * @param taskDescription
	 */
	public void setTaskDescription(String taskDescription) {
		this.taskDescription = taskDescription;
	}
	/**
	 * 
	 * @param taskAction
	 */
	public void setTaskAction(TaskAction taskAction){
		this.taskAction = taskAction;
	}
	/**
	 * 
	 * @return
	 */
	public TaskAction getTaskAction(){
		return this.taskAction;
	}

	//TODO: use better identifier to explain the purpose of the method
	public void doTask() {
		TaskOperations taskOperations = new TaskOperations(this, TaskO.taskList.tasksInTempStorage, TaskO.taskList.tasksOnDisplay, TaskO.taskList.typeTasksOnDisplay, TaskO.taskList.snapshotOfTasks);
	}
}

